﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Tst.Models;
using Ext.Direct.Mvc;

namespace Tst.Controllers
{
    public class AmbienteTesteController : Controller
    {
        private AmbienteTesteRepository ambienteTesteRep;

        public AmbienteTesteController()
        {
            this.ambienteTesteRep = new AmbienteTesteRepository();
        }


        public ActionResult List()
        {
            return this.Direct(this.ambienteTesteRep.GetAll());
        }
        
        public ActionResult Create(AmbienteTeste pAmbienteTeste)
        {
            AmbienteTeste ambienteTeste = this.ambienteTesteRep.GetByDescricao(pAmbienteTeste.ds_descricao);

            if (ambienteTeste != null && ambienteTeste.cd_ambiente_teste != pAmbienteTeste.cd_ambiente_teste)
            {
                return this.Direct(new
                {
                    success = false,
                    errors = new
                    {
                        ds_ambiente = "Ambiente de Teste já cadastrado."
                    }
                });
            }

            if (pAmbienteTeste.cd_ambiente_teste == 0)
            {
                ambienteTeste = new AmbienteTeste()
                {
                    ds_descricao = pAmbienteTeste.ds_descricao
                };

                this.ambienteTesteRep.Insert(ambienteTeste);
            }
            else
            {
                ambienteTeste = this.ambienteTesteRep.GetById(pAmbienteTeste.cd_ambiente_teste);

                ambienteTeste.ds_descricao = pAmbienteTeste.ds_descricao;

                this.ambienteTesteRep.Update(ambienteTeste);
            }

            this.ambienteTesteRep.Save();

            return this.Direct(new
            {
                success = true,
                cd_ambiente_teste = ambienteTeste.cd_ambiente_teste

            });

        }

        public ActionResult Delete(int cd_ambiente_teste)
        {
            this.ambienteTesteRep.Delete(cd_ambiente_teste);
            this.ambienteTesteRep.Save();

            return this.Direct(new { success = true });
        }
    }
}
